conf: disable RepoFinder methods that don't autogenerate correctly
authorFelix Krull <f_krull@gmx.de>
Wed, 1 Apr 2020 18:21:48 +0000 (20:21 +0200)
committerColin Walters <walters@verbum.org>
Fri, 6 May 2022 16:53:56 +0000 (12:53 -0400)
rust-bindings/rust/conf/ostree.toml
rust-bindings/rust/src/auto/repo_finder.rs
rust-bindings/rust/src/auto/versions.txt
rust-bindings/rust/sys/src/auto/versions.txt

index c7ac44b7ae2028ae36d150e29f4366919836e336..8289bf5342c64595af5c60468d6b69ad2fafeb91 100644 (file)
@@ -36,7 +36,6 @@ generate = [
     "OSTree.RepoCommitState",
     "OSTree.RepoDevInoCache",
     "OSTree.RepoFile",
-    "OSTree.RepoFinder",
     "OSTree.RepoFinderAvahi",
     "OSTree.RepoFinderConfig",
     "OSTree.RepoFinderMount",
@@ -140,7 +139,7 @@ status = "generate"
     ignore = true
 
     [[object.function]]
-    # these fail because of issues with zero-terminated arrays
+    # these fail because of issues with arrays of dubious lifetimes
     pattern = "find_remotes_async|pull_from_remotes_async"
     ignore = true
 
@@ -150,7 +149,6 @@ status = "generate"
     ignore = true
 
     [[object.function]]
-    # TODO: see which of these annotations I can upstream
     name = "checkout_at"
     [[object.function.parameter]]
     name = "options"
@@ -159,6 +157,14 @@ status = "generate"
     name = "destination_path"
     string_type = "filename"
 
+[[object]]
+name = "OSTree.RepoFinder"
+status = "generate"
+    [[object.function]]
+    # these fail because of issues with arrays of dubious lifetimes
+    pattern = "resolve_async|resolve_all_async"
+    ignore = true
+
 [[object]]
 name = "OSTree.RepoFinderResult"
 status = "generate"
index 821d5417dbdfcc63dd9402cd81cd4607f84c9cdf..b2e4ea3da5cf59a3af46101358cc5ec718a7831a 100644 (file)
@@ -5,28 +5,14 @@
 #[cfg(any(feature = "v2018_6", feature = "dox"))]
 use gio;
 #[cfg(any(feature = "v2018_6", feature = "dox"))]
-use gio_sys;
-#[cfg(any(feature = "v2018_6", feature = "dox"))]
 use glib;
 use glib::object::IsA;
 use glib::translate::*;
-#[cfg(any(feature = "v2018_6", feature = "dox"))]
-use glib_sys;
-#[cfg(any(feature = "v2018_6", feature = "dox"))]
-use gobject_sys;
 use ostree_sys;
-#[cfg(any(feature = "v2018_6", feature = "dox"))]
-use std::boxed::Box as Box_;
 use std::fmt;
 #[cfg(any(feature = "v2018_6", feature = "dox"))]
-use std::pin::Pin;
-#[cfg(any(feature = "v2018_6", feature = "dox"))]
 use std::ptr;
 #[cfg(any(feature = "v2018_6", feature = "dox"))]
-use CollectionRef;
-#[cfg(any(feature = "v2018_6", feature = "dox"))]
-use Repo;
-#[cfg(any(feature = "v2018_6", feature = "dox"))]
 use RepoFinderResult;
 
 glib_wrapper! {
@@ -37,96 +23,13 @@ glib_wrapper! {
     }
 }
 
-impl RepoFinder {
-    #[cfg(any(feature = "v2018_6", feature = "dox"))]
-    pub fn resolve_all_async<P: IsA<gio::Cancellable>, Q: FnOnce(Result<Vec<RepoFinderResult>, glib::Error>) + Send + 'static>(finders: &[RepoFinder], refs: &[&CollectionRef], parent_repo: &Repo, cancellable: Option<&P>, callback: Q) {
-        let user_data: Box_<Q> = Box_::new(callback);
-        unsafe extern "C" fn resolve_all_async_trampoline<Q: FnOnce(Result<Vec<RepoFinderResult>, glib::Error>) + Send + 'static>(_source_object: *mut gobject_sys::GObject, res: *mut gio_sys::GAsyncResult, user_data: glib_sys::gpointer) {
-            let mut error = ptr::null_mut();
-            let ret = ostree_sys::ostree_repo_finder_resolve_all_finish(res, &mut error);
-            let result = if error.is_null() { Ok(FromGlibPtrContainer::from_glib_full(ret)) } else { Err(from_glib_full(error)) };
-            let callback: Box_<Q> = Box_::from_raw(user_data as *mut _);
-            callback(result);
-        }
-        let callback = resolve_all_async_trampoline::<Q>;
-        unsafe {
-            ostree_sys::ostree_repo_finder_resolve_all_async(finders.to_glib_none().0, refs.to_glib_none().0, parent_repo.to_glib_none().0, cancellable.map(|p| p.as_ref()).to_glib_none().0, Some(callback), Box_::into_raw(user_data) as *mut _);
-        }
-    }
-
-    
-    #[cfg(any(feature = "v2018_6", feature = "dox"))]
-    pub fn resolve_all_async_future(finders: &[RepoFinder], refs: &[&CollectionRef], parent_repo: &Repo) -> Pin<Box_<dyn std::future::Future<Output = Result<Vec<RepoFinderResult>, glib::Error>> + 'static>> {
-
-        let finders = finders.clone();
-        let refs = refs.clone();
-        let parent_repo = parent_repo.clone();
-        Box_::pin(gio::GioFuture::new(&(), move |_obj, send| {
-            let cancellable = gio::Cancellable::new();
-            Self::resolve_all_async(
-                &finders,
-                &refs,
-                &parent_repo,
-                Some(&cancellable),
-                move |res| {
-                    send.resolve(res);
-                },
-            );
-
-            cancellable
-        }))
-    }
-}
+impl RepoFinder {}
 
 pub const NONE_REPO_FINDER: Option<&RepoFinder> = None;
 
-pub trait RepoFinderExt: 'static {
-    #[cfg(any(feature = "v2018_6", feature = "dox"))]
-    fn resolve_async<P: IsA<gio::Cancellable>, Q: FnOnce(Result<Vec<RepoFinderResult>, glib::Error>) + Send + 'static>(&self, refs: &[&CollectionRef], parent_repo: &Repo, cancellable: Option<&P>, callback: Q);
-
-    
-    #[cfg(any(feature = "v2018_6", feature = "dox"))]
-    fn resolve_async_future(&self, refs: &[&CollectionRef], parent_repo: &Repo) -> Pin<Box_<dyn std::future::Future<Output = Result<Vec<RepoFinderResult>, glib::Error>> + 'static>>;
-}
-
-impl<O: IsA<RepoFinder>> RepoFinderExt for O {
-    #[cfg(any(feature = "v2018_6", feature = "dox"))]
-    fn resolve_async<P: IsA<gio::Cancellable>, Q: FnOnce(Result<Vec<RepoFinderResult>, glib::Error>) + Send + 'static>(&self, refs: &[&CollectionRef], parent_repo: &Repo, cancellable: Option<&P>, callback: Q) {
-        let user_data: Box_<Q> = Box_::new(callback);
-        unsafe extern "C" fn resolve_async_trampoline<Q: FnOnce(Result<Vec<RepoFinderResult>, glib::Error>) + Send + 'static>(_source_object: *mut gobject_sys::GObject, res: *mut gio_sys::GAsyncResult, user_data: glib_sys::gpointer) {
-            let mut error = ptr::null_mut();
-            let ret = ostree_sys::ostree_repo_finder_resolve_finish(_source_object as *mut _, res, &mut error);
-            let result = if error.is_null() { Ok(FromGlibPtrContainer::from_glib_full(ret)) } else { Err(from_glib_full(error)) };
-            let callback: Box_<Q> = Box_::from_raw(user_data as *mut _);
-            callback(result);
-        }
-        let callback = resolve_async_trampoline::<Q>;
-        unsafe {
-            ostree_sys::ostree_repo_finder_resolve_async(self.as_ref().to_glib_none().0, refs.to_glib_none().0, parent_repo.to_glib_none().0, cancellable.map(|p| p.as_ref()).to_glib_none().0, Some(callback), Box_::into_raw(user_data) as *mut _);
-        }
-    }
-
-    
-    #[cfg(any(feature = "v2018_6", feature = "dox"))]
-    fn resolve_async_future(&self, refs: &[&CollectionRef], parent_repo: &Repo) -> Pin<Box_<dyn std::future::Future<Output = Result<Vec<RepoFinderResult>, glib::Error>> + 'static>> {
-
-        let refs = refs.clone();
-        let parent_repo = parent_repo.clone();
-        Box_::pin(gio::GioFuture::new(self, move |obj, send| {
-            let cancellable = gio::Cancellable::new();
-            obj.resolve_async(
-                &refs,
-                &parent_repo,
-                Some(&cancellable),
-                move |res| {
-                    send.resolve(res);
-                },
-            );
+pub trait RepoFinderExt: 'static {}
 
-            cancellable
-        }))
-    }
-}
+impl<O: IsA<RepoFinder>> RepoFinderExt for O {}
 
 impl fmt::Display for RepoFinder {
     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
index 34a0b4e53d1edd05afc51ad5605bf787e8fde1c6..7b5882906d055918b03ce89b59be9f98fe10fa26 100644 (file)
@@ -1,2 +1,2 @@
 Generated by gir (https://github.com/gtk-rs/gir @ 60cbef05)
-from gir-files (https://github.com/gtk-rs/gir-files @ 2495460+)
+from gir-files (https://github.com/gtk-rs/gir-files @ e8bc04f)
index 34a0b4e53d1edd05afc51ad5605bf787e8fde1c6..7b5882906d055918b03ce89b59be9f98fe10fa26 100644 (file)
@@ -1,2 +1,2 @@
 Generated by gir (https://github.com/gtk-rs/gir @ 60cbef05)
-from gir-files (https://github.com/gtk-rs/gir-files @ 2495460+)
+from gir-files (https://github.com/gtk-rs/gir-files @ e8bc04f)